package pfc.aviloc.aplicacion.datos_personales;

import java.util.Date;

import pfc.aviloc.R;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

public class DatosPersonalesBD extends SQLiteOpenHelper {

	//Sentencia SQL para crear la tabla de Usuarios
    //String sqlCreate = "CREATE TABLE datospersonales (codigo INTEGER, nombre TEXT)";
    Context context;
    
	public DatosPersonalesBD(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
		this.context = context;
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		String sqlCreate = recuperarSentenciaCreate();
		db.execSQL(sqlCreate);
	}
		
	private String recuperarSentenciaCreate() {
		String sqlCreate = "CREATE TABLE "+ context.getString(R.string.dp_bd_nombre_tabla_datos_personales) +" ("+
							context.getString(R.string.dp_bd_campo_id_usuario) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_dni) +" TEXT, " +							
							context.getString(R.string.dp_bd_campo_tipo) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_password) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_nombre) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_apellido1) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_apellido2) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_telefono) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_movil) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_mail) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_sexo) +" TEXT, " +							
							context.getString(R.string.dp_bd_campo_fecha_nacimiento) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_direccion) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_localidad) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_provincia) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_foto) +" TEXT, " +
							context.getString(R.string.dp_bd_campo_fecha_actualizacion) +" TEXT )";
//		Log.i("INFO","<33333333333333333333<<<<<<<< sqlCreate = "+sqlCreate);
		return sqlCreate;
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //Se elimina la version anterior de la tabla
		String sqlDrop = "DROP TABLE IF EXISTS "+context.getString(R.string.dp_bd_nombre_tabla_datos_personales);
        db.execSQL(sqlDrop);
        
        //Se crea la nueva version de la tabla
		String sqlCreate = recuperarSentenciaCreate();
		db.execSQL(sqlCreate);		
	}
	
	public boolean insertarBD(DatosPersonales dp) {
		SQLiteDatabase db = this.getWritableDatabase();
		// Si hemos abierto correctamente la base de datos
		if (db != null) {
			try{
				//Recuperamos los datos a almacenar en el ContentValues
				ContentValues registroDatosPersonales = dp.getContentValues(context);
				//Log.i("INFO","<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>registroDatosPersonales="+registroDatosPersonales);
				//String fecha = (new Date()).toLocaleString();
				//Log.i("INFO","<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>fecha="+fecha);
				//registroDatosPersonales.put(context.getString(R.string.dp_bd_campo_fecha_actualizacion), fecha);
				try {
					int respDelete = db.delete(context.getString(R.string.dp_bd_nombre_tabla_datos_personales), context.getString(R.string.dp_bd_campo_id_usuario)+"=?", new String[] {dp.getIdPaciente()});	
				} catch (Exception e) {
					// TODO: handle exception
					Log.i("INFO","<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>> ERROR al Borrar TABLA DATOS PERSONALES");
				}	
				
				//Log.i("INFO","<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>> respDelete="+respDelete);
				//Insertamos el registro en la base de datos
				//ContentValues aa = new ContentValues();
				//aa.put("idusuario","1");
				//aa.put("nombre", "ALbert");
				long respInsert = db.insert(context.getString(R.string.dp_bd_nombre_tabla_datos_personales), null, registroDatosPersonales);
				//Log.i("INFO","<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>> respInsert="+respInsert);
				// Cerramos la base de datos
				db.close();
				if (respInsert<0){
					return false;
				}
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
				return false;
			}
			return true;
		} else {
			return false;
		}
	}
	
	public DatosPersonales recuperarBD(String id){
		DatosPersonales datos = null;
		SQLiteDatabase db = this.getWritableDatabase();
		// Si hemos abierto correctamente la base de datos
		if (db != null) {
			//db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
			Cursor c = db.query(context.getString(R.string.dp_bd_nombre_tabla_datos_personales), null, context.getString(R.string.dp_bd_campo_id_usuario)+"=?", new String[] {id}, null, null, null);
			if ( (c != null) && (c.moveToFirst()) ) {
				int numColumnas = c.getColumnCount();
				ContentValues datosContentValues = new ContentValues();
				for (int i = 0 ; i < numColumnas ; i++) {
					String columna = c.getColumnName(i);
					String valor = c.getString(i);
					datosContentValues.put(columna, valor);					
				}
				datos = new DatosPersonales(datosContentValues, context);
			}
		}
		return datos;
	}
}